package token
// 位置的结构体
type Position struct {
	Idx   int   // 索引位置
	Ln    int    // 行号
	Col   int    // 列号
	Fn    string // 文件
	FText string // 文件
}
// 位置向前走一位
func (p *Position) Advance(currentChar string) *Position {
	p.Idx++ // 索引向前加一
	p.Col++ // 列向前走一
	// 当前为换行符，就行加1，列变成了0
	if currentChar == "\n" {
		p.Ln++
		p.Col = 0
	}
	return p
}
// 拷贝一个当前的position
func (p *Position) Copy() *Position {
	return &Position{
		Idx:   p.Idx,
		Ln:    p.Ln,
		Col:   p.Col,
		Fn:    p.Fn,
		FText: p.FText,
	}
}